// pages/login/login.js
import { reqLogin, reqUserInfo } from '../../api/user'
import { toast } from '../../utils/extendApi'
import { setStorage } from '../../utils/storage'
import { ComponentWithStore } from 'mobx-miniprogram-bindings'
import { userStore } from '../../stores/userStore'
// 导入防抖函数
import { debounce } from 'miniprogram-licia'

ComponentWithStore({
    //建立store联系
    storeBindings: {
        store: userStore,
        fields: ['token', 'userInfo'],
        actions: ['setToken', 'setUserInfo']
    },

    methods: {
        Login: debounce(function() {
            wx.login({
              success: async ({ code }) => {
                if(code) {
                    //获取到临时登录凭证code后，需要传递给开发者服务器
                    const { data } = await reqLogin(code)

                    //登录成功以后，需要将服务器响应的自定义登录态存储到本地
                    setStorage('token', data.token)

                    //将自定义登录态token存储带store对象中
                    this.setToken(data.token)

                    //获取用户信息
                    this.getUserInfo()

                    //返回登录界面
                    wx.navigateBack()
                } 
                else {
                    toast({ title: '登录失败，请重新登陆' })
                }
              },
            })
        },500),

        //获取用户信息函数
        async getUserInfo() {
            //通过接口获取用户信息
            const { data } = await reqUserInfo()
            //将用户信息存储到本地
            setStorage('userInfo', data)
            //将用户信息存储到store对象中
            this.setUserInfo(data)
        }
    }
})
